package api;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
    /*退出登入
    判定登入状态逻辑中
    1.会话存在
    2.会话中存储的user对象存在
    破坏上述的任何一个条件，都可以达成，注销这样的效果，但是Servlet中，并没有直接提供一个api来删除会话，但是有api能够删除会话中的user（Attribute)
    注意：
    会话本体是一个被Servlet使用hashmap管理起来的对象，你把你自己创建的session引用设置为null，不会影响到hashmap里对象的本体。我们要去销毁本体
    1.约定前后端交互接口
    请求
    GET/logout
    响应
    HTTP/1.1 302
    Login:login.html
     */

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session= req.getSession(false);
        if(session==null){
            //当前就是未登入状态，谈不上退出登入
            resp.sendRedirect("login.html");
            return;
        }
        //之前在登入成功之后，就会给session中存储user这样的Attribute
        //把这个删掉之后，自然就会判定为"未登录了"
        session.removeAttribute("user");
        resp.sendRedirect("login.html");



    }
}
